<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/3/22 0022
 * Time: 10:10
 */

namespace app\admin\controller;


use OSS\Core\OssException;
use OSS\OssClient;
use think\Controller;
use think\Config;
use think\Image;
use think\Loader;
use think\Db;
use think\Session;

class UploadController extends BaseController
{
    /*
     * 图片上传公共方法
     */
    public function img_save(){
        $type=input("param.type");
        $img = request()->file('file');
        // 移动到框架应用根目录/public/uploads/ 目录下
        $info = $img->move(ROOT_PATH . 'public' . DS . 'upload'. DS . $type. DS . date('Y') . DS . date('m-d'),md5(microtime(true)));
        if($info){
            // 成功上传后 获取上传信息
            $imgPath = "/upload/$type/" . date('Y') . '/' . date('m-d') . '/' . $info->getSaveName();
            return json(["code"=> 1, "msg" => "上传成功", "url" => $imgPath]);
        }else{
            // 上传失败获取错误信息0
            return json(["code"=> 0, "msg" => $img->getError(), "url" => '']);
        }

    }
    /*
     * 图片上传公共方法 layui
     */
    public function img_save_layui(){
        $type=input("param.type");
        $img = request()->file('file');
        // 移动到框架应用根目录/public/uploads/ 目录下
        $info = $img->move(ROOT_PATH . 'public' . DS . 'upload'. DS . $type. DS . date('Y') . DS . date('m-d'),md5(microtime(true)));
        if($info){
            // 成功上传后 获取上传信息
            $imgPath = "/upload/$type/" . date('Y') . '/' . date('m-d') . '/' . $info->getSaveName();
            return json(["code"=> 0, "msg" => "上传成功", "data" =>(["src"=>$imgPath,'title'=>'',"style"=>'display:inline-block;height:auto;max-width:50%'])]);
        }else{
            // 上传失败获取错误信息0
            return json(["code"=> 1, "msg" => $img->getError(), "url" => '']);
        }

    }

    /*
     * 图片上传到阿里云OSS
     */
    public function upload_img_oss(){
    $type=input("param.type");
     $img = request()->file('file');
     $resResult = Image::open($img);
        // 尝试执行
        try {
            $config = Config('appliy_oss'); //获取Oss的配置
            //实例化对象 将配置传入
            $ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint']);

            //这里是有sha1加密 生成文件名 之后连接上后缀
            $fileName = $type.'/' . sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type();
            //执行阿里云上传
            $result = $ossClient->uploadFile($config['Bucket'], $fileName, $img->getInfo()['tmp_name']);
            /**
             * 这个只是为了展示
             * 可以删除或者保留下做后面的操作
             */
            /*$arr = [
                //图片地址
                'imgurl' => $result['info']['url'],
                //数据库保存名称
                'dbimgName' => $fileName
            ];*/
            return json(["code"=> 1, "msg" => "上传成功", "url" => $fileName]);

        } catch (OssException $e) {
            // 上传失败获取错误信息0
            return json(["code"=> 0, "msg" => $e->getMessage(), "url" => '']);
//            return
        }
        /*//将结果输出
        return $arr;*/
}



    //图片上传为base64为的图片
    public function upload_base64($type,$img){
        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $img, $result)){
            $type_img = $result[2];  //得到图片的后缀
            //上传 的文件目录

            $new_files = ROOT_PATH . 'public' . DS . 'upload'. DS . $type. DS . date('Y') . DS . date('m-d') . DS ;

            if(!file_exists($new_files)) {
                //检查是否有该文件夹，如果没有就创建，并给予最高权限
                //服务器给文件夹权限
                mkdir($new_files, 0777,true);
            }
            $new_files = $new_files.date("YmdHis").".{$type_img}";
            if (file_put_contents($new_files, base64_decode(str_replace($result[1], '', $img)))){
                //上传成功后  得到信息
                $filenames=str_replace('\\', '/', $new_files);
                $file_name=substr($filenames,strripos($filenames,"/upload"));
                return $file_name;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

    /*
     * 生成二维码 （不带logo图片的）
     */
    public function qr_code(){
        $type=input("param.type");
        $admin_id=Session::get("admin_id");
        //二维码URL参数
        $text = "https://blog.itxkf.cn/admin/login/info/admin_id/$admin_id";
        $filenames=qc_code($text,$type);
        $filenames_string=str_replace('\\', '/', $filenames);
        $file_name=substr($filenames_string,strripos($filenames_string,"/upload")+1);

        try{
            return json(["code"=> 1, "msg" => "生成成功", "url" => '/'.$file_name]);
        }catch (\Exception $e){
            return json(["code"=> 1, "msg" => "生成失败", "url" => '']);
        }

    }


}